//
//  HomeTableViewController.swift
//  0110-weibo
//
//  Created by 鲍志刚 on 16/1/10.
//  Copyright © 2016年 zhongye. All rights reserved.
//

import UIKit
import AFNetworking
import SVProgressHUD

private let HomeCellId = "HomeCellId"

class HomeTableViewController: BaseTableViewController {
    
    //模型数据
    private lazy var statuses = [Status]()


    override func viewDidLoad() {
        super.viewDidLoad()
        if !userLogin {
            visitorLoginView?.setupUIWithInfo(nil, tipText: "关注一些人，回这里看看有什么惊喜")
            //一定要添加 return
            
        
            return
        }
        
        
        //1.准备tableview
        prepareTableView()
        //2.加载发数据
        loadData()

    }
    
    //准备tableView
    private func prepareTableView() {
        // [UItableViewCell class]
        self.tableView.registerClass(StatusCell.self, forCellReuseIdentifier: HomeCellId)
        
        //1.设置行高为自动计算行高
        //2.设置预估行高
        //3.给tableView的cell的容器设置一个  自上而下的约束
        self.tableView.rowHeight = UITableViewAutomaticDimension
        self.tableView.estimatedRowHeight = 300
        
        
        
//        self.tableView.rowHeight = 200
    }
    
    //加载首页数据
    private func loadData(){
        let urlString = "https://api.weibo.com/2/statuses/friends_timeline.json"
        
        //在字典中添加一个可选项
        guard let token = UserAccountViewModel().token else {
        
        print("用户暂未登录")
            
            SVProgressHUD.showErrorWithStatus("请重新登录")
            return
        
        }
        
        let parameters = ["access_token":token]
        
        let AFN = AFHTTPSessionManager()
        
        AFN.GET(urlString, parameters: parameters, progress: nil, success: { (_, result) -> Void in
            
        
//            print(result)
            //转换为字典格式
            guard let dict = result as? [String : AnyObject] else {
                SVProgressHUD.showErrorWithStatus(AppErrorTip)
                
                print("数据结构错误")
                
                return
            }
            
            guard let array = dict["statuses"] as? [[String : AnyObject]] else{
                SVProgressHUD.showErrorWithStatus(AppErrorTip)
                print("数据结构错误")
                return
            }
            
            //定义容器数组
            var tempArray = [Status]()
            //获取必选的 字典数组
            //便利数组 做字典转模型
            for item in array {
                let s = Status(dict: item)
                //添加元素
                tempArray.append(s)
            }
            
            //执行成功的回调
            //            finished(statuses: tempArray)
            
            self.statuses = tempArray
            
//            print(tempArray)
            
            self.tableView.reloadData()
            

            
            
            }) { (_, error) -> Void in
                SVProgressHUD.showErrorWithStatus(AppErrorTip)
                print(error)
        }
        
        
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }



}


//在扩展中实现tableView的数据源方法
extension HomeTableViewController {
    
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return self.statuses.count
    }
    
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        //手写代码 必须手动注册cell
        let cell = tableView.dequeueReusableCellWithIdentifier(HomeCellId, forIndexPath: indexPath) as! StatusCell
        //显示文案
//        cell.textLabel?.text = self.statuses[indexPath.row].user?.name
        
        cell.status = self.statuses[indexPath.row]
//        print(self.statuses[indexPath.row].i)
        
        return cell
    }
}
